#pragma once
#include <string>
#include <stdint.h>
#include <memory>  // std::auto_ptr
#include <cstdlib> // std::exit
#include <iostream>
#include <vector>
#include <mysql/mysql.h>
#include "logger.hpp"
#include <odb/database.hxx>
#include <odb/mysql/database.hxx>


//用户注册 用户登录 验证码获取 手机号注册 手机号登录 获取用户信息 用户信息修改
//用信息新增 通过昵称获取用户信息 通过手机号获取用户信息 通过用户名id获取用户信息 通过多个用户id获得用户信息
namespace xchat
{
class ODBFactory
{
public:
    //odb::mysql::database db(FLAGS_user, FLAGS_pwd, FLAGS_db, FLAGS_host, FLAGS_port, "",  FLAGS_cset, 0, std::move(cpf));
    static std::shared_ptr<odb::core::database> create(const std::string &user, const std::string &pwd, 
        const std::string &host, const std::string &db,const std::string &cset,
        int port, int conn_pool_count)
    {
        std::unique_ptr<odb::mysql::connection_pool_factory> cpf(new odb::mysql::connection_pool_factory(conn_pool_count, 0));
        auto res = std::make_shared<odb::mysql::database>(user, pwd, db, host, port, "",  cset, 0, std::move(cpf));

        return res;
    }
};



}